In recent years, a virtual machine (VM) that is one of the virtual techniques for an information processing device (computer) has broadly been applied to information processing devices. In the execution environment of such a virtual machine, hardware (a resource) of an information processing device is virtualized, and each virtual machine operates on the virtualized hardware. Thus, each virtual machine individually operates in an entirely independent manner. As a result, using a virtual machine technique permits operating of one information processing device as a plurality of servers.
The information processing device is provided with one or more arithmetic processing units. In general, the arithmetic processing unit is a device called a CPU (central processing unit) or an MPU (micro-processing unit) that executes a program. The arithmetic processing unit may be, for example, a processor. The arithmetic processing unit will hereinafter be referred to as “CPU” for convenience.
Each of the virtual machines created on the information processing device is allocated one CPU as a part of resources. In general, the CPU provided in the information processing device includes a plurality of CPU cores that form its core. Thus, in general, allocation of a CPU to a virtual machine is performed on a CPU-core basis.
FIG. 1 is a block diagram of an example of allocation of a CPU core to a virtual machine. The example in FIG. 1 is a case in which four virtual machines 4 (4-1 to 4-4) are operated on a VMM (virtual machine monitor) 3. An information processing device 1 includes four CPUs 21 (21-1 to 21-4) and a storage 22 as resources 2. The VMM 3 is also called a hypervisor.
The storage 22 is, for example, an ensemble of a secondary storage and a memory module. A resource that has to be allocated to a virtual machine 4 to be created is designated by setting information 22a stored in the storage 22. The VMM 3 refers to the setting information 22a and allocates the resources to the respective virtual machines 4.
Each of the CPUs 21 includes two CPU cores 25 (25-0 and 25-1) and shared resources 26. For example, the shared resources 26 include an LLC (last level cache), an interface with the storage 22, and an interface that permits communication with the other CPUs 21. The CPU will hereinafter be referred to as “CPU package”.
In FIG. 1, allocation of a CPU core 25 to each virtual machine 4 is represented by an arrow. In the example of FIG. 1, one of the CPU cores 25-0 in each of the CPU packages 21-1 to 21-4 is allocated to each of the virtual machines 4-1 to 4-4. One CPU core 25 in each of the CPU packages 21 is allocated to each of the virtual machines 4 because processing performance per CPU core 25 provided in a CPU package 21 becomes higher with an increase in the number of CPU cores 25 that are not in use.
As described above, the resources 2 are virtualized. Accordingly, each of the CPU cores 25 in each of the CPU packages 21 is also virtualized. Allocation of a CPU core 25 to each virtual machine 4 is performed by allocating a virtual CPU core 4a that is a virtualized CPU core 25.
The VMM 3 also has a plurality of functions to increase the availability of a virtual machine 4. A failure localization function and a resource reallocation function are typical examples of the functions.
The failure localization function is a function for localizing a range influenced by a failure when the failure occurs in any hardware that constitutes the resources 2. For example, when a failure has occurred in the CPU package 21-1, the virtual machines 4-2 to 4-4 other than the virtual machine 4-1 that uses the CPU core 25-0 in the CPU package 21-1 can continue to operate normally because of the failure localization function.
The resource reallocation function is a function for reallocating other hardware to a virtual machine 4 that uses hardware in which a sign of failure has appeared when the sign of failure has appeared in any hardware that constitutes the resources 2. For example, when a failure sign has appeared in the CPU package 21-1, the resource reallocation function allocates a CPU core 25 in another CPU package 21 to the virtual machine 4-1 that uses the CPU core 25-0 in the CPU package 21-1. Such a reallocation (change in allocation) of a CPU core 25 permits the virtual machine 4-1 to continue to operate.
As described above, each virtual machine 4 created on the information processing device 1 individually operates in an entirely independent manner. However, a plurality of virtual machines 4 may cooperate with one another. A case in which the information processing device 1 is used as an information processing device 30 in FIG. 3 is an example of this.
FIG. 3 is a block diagram which illustrates an example of a web system. The web system provides data (content) managed by a database (DB) server 40 or data generated from the data managed by the database server 40 by use of a load balancer 50 and an information processing device 30. On the information processing device 30, two processing systems 32 (32-1 and 32-2) that have a virtual machine 33 operating as one web server and a virtual machine 34 operating as one application (AP) server are constructed. The load balancer 50 sorts requests issued by a terminal that is connected via a network to one of the two processing systems 32. In each of the two processing systems 32, the two virtual machines 33 and 34 cooperate with each other to offer a service such as providing the data managed by the DB server 40 to the terminal that has transmitted the requests.
It is assumed that the information processing device 1 is used as the information processing device 30 of FIG. 3. It is further assumed that the virtual machines 4-1 and 4-2 operate as the virtual machines 33 and 34 in the processing system 32-1, and the virtual machines 4-3 and 4-4 operate as the virtual machines 33 and 34 in the processing system 32-2.
When a failure has occurred in the CPU package 21-1 or a failure sign has been detected, a CPU core 25 that is newly allocated to the virtual machine 4-1 is selected from the CPU packages 21-2 to 21-4. In this case, to avoid any confusion, a failure occurrence will herein be used in a sense including failure sign detection unless otherwise specified.
As assumed above, operation performance of the information processing device 1 (web system) when a failure has occurred in any of the CPU packages 21 varies according to a CPU package 21 including a CPU core 25 to be newly allocated to the virtual machine 4-1.
When a CPU core 25 in the CPU package 21-2 is newly allocated to the virtual machine 4-1, one of the processing systems 32 can continue to operate even if a failure has occurred in any one of the CPU packages 21-2 to 21-4. When a failure has occurred in the CPU package 21-2, the processing system 32-2 can continue to operate, and when a failure has occurred in the CPU package 21-3 or 21-4, the processing system 32-1 can continue to operate.
When a CPU core 25 in the CPU package 21-3 is newly allocated to the virtual machine 4-1, both of the processing systems 32 are not allowed to continue to operate when a failure has occurred in the CPU package 21-3. However, the processing system 32-2 can continue to operate when a failure has occurred in the CPU package 21-2, and the processing system 32-1 can continue to operate when a failure has occurred in the CPU package 21-4.
When a CPU core 25 in the CPU package 21-4 is newly allocated to the virtual machine 4-1, both of the processing systems 32 are not allowed to continue to operate when a failure has occurred in the CPU package 21-4. However, the processing system 32-2 can continue to operate when a failure has occurred in the CPU package 21-2, and the processing system 32-1 can continue to operate when a failure has occurred in the CPU package 21-3.
As described above, when a plurality of virtual machines 4 cooperate with one another, operation performance of the information processing device 1, that is, operation performance of all the virtual machines 4 varies according to a CPU package 21 including a CPU core 25 to be newly allocated to a virtual machine 4. Depending on a CPU package 21 including a CPU core 25 to be newly allocated, a failure that occurs in one CPU package 21 does not allow the information processing device 1 to continue to operate. Accordingly, when a CPU core 25 is newly allocated to a virtual machine 4, it is important to prevent a decrease in operation performance of all the virtual machines 4 due to a failure in a CPU package 21 that occurs after the allocation; in other words, it is important to have fewer virtual machines 4 that are not allowed to actually operate.
There is a conventional information processing device that automatically sets, for each virtual machine, requirements which a CPU package including a CPU core to be allocated to a virtual machine has to meet when a failure occurs in the CPU package including the CPU core used by the virtual machine. A plurality of requirements including an order of priority can be set. Accordingly, in the information processing device that automatically sets requirements, a CPU core in the CPU package that meets the set requirements can be allocated to a virtual machine.
An occupancy allocation requirement and an occupancy allocation requirement including exclusive cooperation are examples of the requirements that can be set by the conventional information processing device. The occupancy allocation requirement allocates only one virtual machine to one CPU package. The occupancy allocation requirement including exclusive cooperation does not allocate CPU cores in the same CPU package to a designated virtual machine.
In the conventional information processing device, for example, when the occupancy allocation requirement and the occupancy allocation requirement including exclusive cooperation are set together, one of them is set as an alternative requirement. Accordingly, when there is not any CPU package that meets the non-alternative requirement, the conventional information processing device performs allocation according to the order of priority between the requirements by allocating a CPU core in the CPU package that meets the alternative requirement.
According to the conventional information processing device, the occupancy allocation requirement including exclusive cooperation is set in order to prevent a double failure through sharing the same CPU package. Accordingly, a target virtual machine for which the occupancy allocation requirement including exclusive cooperation is set is a virtual machine that cooperates with other virtual machines. Taking the information processing device 30 in FIG. 3 as an example, this means that, as far as possible, the CPU cores in the same CPU package are not allocated to the two virtual machines 33 and 34 included in the same processing system 32. Thus, in the conventional information processing device, it is very difficult to reduce the number of processing systems that are not allowed to continue to operate due to a failure that occurs in the CPU package after its CPU core is newly allocated. Thus, in the conventional information processing device, the influence of a failure that occurs in a CPU package is likely to be greater when a plurality of virtual machines cooperate with one another.
Patent Document 1: Japanese Laid-open Patent Publication No. 2010-205209
Patent Document 2: Japanese Laid-open Patent Publication No. 2007-207219